#ifndef GAMEEVENT_H
#define GAMEEVENT_H

class GameEvent
{
public:
	GameEvent();
	virtual ~GameEvent();

	bool Equals(const GameEvent* gameEvent) const;
	virtual void Copy(GameEvent* gameEvent) = 0;
	virtual GameEvent* Clone() const = 0;

protected:
	void InitializeType(unsigned int* type);
	virtual unsigned int Type() const = 0;
private:
	static unsigned int uniqueType;
};

#endif //GAMEEVENT_H
